﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using Common;
using Model;
using Model.Sys;
using Model.Sys.Config;

namespace Controllers.Filter
{
    //public class PowerAttribute:FilterAttribute, IActionFilter
    //{
    //    /// <summary>
    //    /// 权限Id
    //    /// </summary>
    //    public string PowerId { get; set; }
    //    /// <summary>
    //    /// 登录的用户信息
    //    /// </summary>
    //    protected UserInfo loginUser = null;
    //    protected IBllSession CurrentBllSession
    //    {
    //        get
    //        {
    //            return BllSessionUtil.GetCurrentBllSession();
    //        }
    //    }

    //    public void OnActionExecuting(ActionExecutingContext filterContext)
    //    {
    //        bool isPass = false;

    //        Cache cache=CurrentBllSession.CacheBll.GetCache(CookieHelper.GetCookieValue(CookieConfig.UserInfoLoginCookieName));
    //        if (cache != null)
    //        {
    //            this.loginUser = (UserInfo)cache.Value;
    //        }
    //        if (loginUser != null)
    //        {
    //            if (loginUser.IsSuper.HasValue&&loginUser.IsSuper.Value)//超级管理员
    //            {
    //                isPass = true;
    //            }
    //            else
    //            {
    //                List<Model.Power> powerList = new List<Model.Power>();

    //                foreach (var role in loginUser.Role)
    //                {
    //                    powerList.AddRange(role.Power.ToList()); ;
    //                }
    //                HashSet<Model.Power> powerSet = new HashSet<Model.Power>(powerList);
    //                powerList.Clear();
    //                powerList = powerSet.ToList();
    //                if (powerList.Count(a => a.PowerId == PowerId) > 0)//用户拥有权限
    //                {
    //                    isPass = true;
    //                }
    //            }
    //        }
    //        if (!isPass)//无权访问，则跳转
    //        {
    //            if (filterContext.HttpContext.Request.IsAjaxRequest())
    //            {
    //                filterContext.Result = new JsonResult()
    //                {
    //                    ContentEncoding = Encoding.UTF8,
    //                    Data = new ResultModel
    //                    {
    //                        Pass = false,
    //                        Msg = "无权访问"
    //                    },
    //                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
    //                };
    //            }
    //            else
    //            {
    //                filterContext.Result = new ContentResult() { Content = "<script>alert('无权访问');</script>" };
    //            }
    //        }
    //    }

    //    public void OnActionExecuted(ActionExecutedContext filterContext)
    //    {
    //        //throw new NotImplementedException();
    //    }
    //}
}